Обновление резервных контроллеров домена
========================================

Подготовка к обновлению
-----------------------

.. attention::

   Обновление операционной системы на контроллерах домена не является обязательным этапом процесса обновления **ALD Pro**.
   Необходимость обновления ОС определяется матрицей совместимости **ALD Pro** и выбранным сценарием (см. :ref:`updating_subsystems`).
   Нижеприведенные шаги 1-3 выполняются только в случае, есть сценарий обновления требует обновления ОС.

Перед обновлением **ALD Pro** важно учитывать:

* Обновление продукта **ALD Pro** необходимо выполнять на контроллере домена от имени учетной записи администратора системы с высоким уровнем целостности.

* Обновления следует начинать с **первого** Контроллера Домена.

* В **ALD Pro** реализовано разграничение доступа к функциям системы. При обновлении системы до актуальной версии администратору должна быть назначена роль **ALDPRO — Main Administrator** (пользователю **admin** роль назначается автоматически), также учетную запись администратора необходимо добавить в группу **ald trust admin**. Остальным пользователям (администраторам) системы соответствующие роли при необходимости нужно назначать в ручном режиме. Подробная информация о работе ролевого доступа находится в Справочном Центре Портала Управления в подразделе **Роли и права доступа** — **Роли в системе**.

.. attention::

   Для релиз-кандидата ссылки на deb-пакеты неактивны. Необходимо использовать iso-образы (см. раздел :ref:`connecting_repositories` → **Установка с помощью iso-образов**).

Программное обеспечение ОС должно совпадать на контроллерах домена, между которыми настроена репликация. На резервном КД необходимо:

1. Убедиться, что в качестве источников пакетов для ОС зарегистрированы основной репозиторий (``main``) и репозиторий с обновлениями основного репозитория (``repository-update``), а в файле ``/etc/apt/sources.list`` указаны строки формата ниже. При необходимости — добавить их, если имеются другие записи, то закомментировать их или удалить:

.. code-block:: bash

   deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/<номер_обновления_ОС_СН>/repository-main 1.7_x86-64 main non-free contrib
   deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/<номер_обновления_ОС_СН>/repository-update 1.7_x86-64 main non-free contrib

При использовании 1.7.ххх с установленным срочным оперативным обновлением (UU) необходимо дополнительно указать **frozen** репозиторий, соответствующий обновлению.

Подробнее в разделе "2.1.1.4. Подключение репозиториев".

2. Обновить пакеты ОС, выполнив в терминале команду:

.. code-block:: bash

   sudo apt update && sudo apt install astra-update -y && sudo astra-update -A -r -T

3. Для корректной работы функций репликации на КД необходимо импортировать новые конфигурации службы каталога, выполнив команды:

.. code-block:: bash

   sudo ipa-server-upgrade
   sudo ipactl restart

Проверки, которые необходимо выполнить до начала обновления ALD Pro
-------------------------------------------------------------------

Перед запуском обновления ALD Pro на КД необходимо выполнить проверки:

1. Перезапуск служб **IPA**. Необходимо убедиться, что все службы **FreeIPA** стартуют успешно. Выполняется на первом КД и на резервных КД:

.. code-block:: bash

   sudo ipactl restart
   sudo ipactl status

2. Проверка работоспособности основных служб: ``krb5-kdc, dirsrv, bind9-pkcs11, aldpro-salt-minion, sssd``. Полное название службы ``dirsrv`` содержит имя домена - ``dirsrv@ALD-COMPANY-LAN`` (пример). Нельзя начинать обновление, если какие-то из служб не функционируют. Выполняется на первом КД и резервных КД:

.. code-block:: bash
   
   systemctl status krb5-kdc 
   systemctl status dirsrv@ALD-COMPANY-LAN
   systemctl status bind9-pkcs11 
   systemctl status aldpro-salt-minion 
   systemctl status sssd
   
3.   Проверка получения билета Kerberos и информации о КД в системе DNS. Выполняется на первом КД и резервных КД:

.. code-block:: bash

   kinit имя_пользователя
   nslookup fqdn_контроллера_домена

4. Отключение служб, связанных с ролями: ``celerybeat`` и ``aldpro-roles-management``. Выполняется на первом КД и резервных КД:

.. code-block:: bash

   sudo systemctl disable --now celerybeat aldpro-roles-management

5. Проверка подключенных репозиториев, отключение лишних репозиториев. Необходимо убедиться, что при доступе к репозиториям не происходит ошибок и задержек. Выполняется на первом КД и резервных КД:

.. code-block:: bash

   Редактирование *.list файлов в каталоге /etc/apt/ и его подкаталогах.
   Обновление индекса пакетов командой ниже.
   sudo apt update

6. Отключение плагина ``389ds - compat``. Позволяет ускорить выполнение обновления. Выполняется на первом КД и резервных КД:

.. code-block:: bash

   sudo ipa-compat-manage status
   sudo ipa-compat-manage disable

7. Деактивация плагина ``winbind_krb5_locator``. Выполняется на резервных КД:

.. code-block:: bash

   sudo update-alternatives --install /usr/lib/x86_64-linux-gnu/krb5/plugins/libkrb5/winbind_krb5_locator.so winbind_krb5_locator.so /dev/null 100

8. Отсутствие двух подсистем на одном хосте. Проверка выполняется перед началом обновления первого контроллера домена.

9. Обновление модуля синхронизации не запущено одновременно с обновлением Системы. Обновление модуля синхронизации и миграцию его баз данных рекомендуется проводить после обновления всех резервных КД.

10. Проверка репликации и отсутствия односторонних соглашений о репликации:

.. code-block:: bash

   dsconf ldap://<имя_КД> -D 'cn=Directory Manager' repl-conflict list dc=ald,dc=company,dc=lan
   dsconf ldap://<имя_КД> -D 'cn=Directory Manager' repl-agmt list --suffix dc=ald,dc=company,dc=lan
   ds-replcheck online -D "cn=Directory Manager" -W -m ldap://<имя_КД_1> -r ldap://<имя_КД_2> -b "<dc=доменный,dc=суффикс>" # <имя_КД_1> и <имя_КД_2> - это контроллеры домена, между которыми установлены соглашения о репликации

11. Проверка наличия атрибутов ``envvar`` и ``ipaLocation``. Выполняется на первом контроллере домена и на резервных:

.. code-block:: bash

   ldapsearch -b "cn=masters,cn=ipa,cn=etc,dc=aldpro,dc=company,dc=lan" -s one ipaLocation envvar

12. Перезагрузка КД с последующей экспресс-проверкой работы служб (повторить пункты 1 и 2 данного раздела). Выполняется непосредственно перед началом обновления первого или резервных контроллеров домена.

.. _update_usinf_MP:

Обновление через портал управления с помощью групповой политики
-----------------------------------

В системе с версии 2.2.0 внедрен функционал централизованного обновления **aldpro-client** на компьютерах домена через **Портал Управления**. Подробную инструкцию см. в :ref:`update_usinf_MP`.
Запуск команд по обновлению осуществляется по таймеру. Максимальное время запуска обновления: 160 минут.

Форсированное обновление (обновление вручную)
-----------------------------------

Для установки обновления **ALD Pro** на резервном контроллере домена необходимо подключить репозиторий **aldpro**, выполнив в терминале команду:

.. code-block:: bash

   sudo nano /etc/apt/sources.list.d/aldpro.list

Полностью заменить содержимое файла ``aldpro.list``:

.. code-block:: bash

   deb https://dl.astralinux.ru/aldpro/frozen/01/3.2.0/ 1.7_x86-64 main base

Обновить индекс пакетов, выполнив в терминале команду:

.. code-block:: bash

   sudo apt update
Обновить пакеты продукта **ALD Pro** командой:

.. code-block:: bash

   sudo apt dist-upgrade -y -o Dpkg::Options::=--force-confnew

Скачать и установить последнюю версию Policy Manager командой:

.. code-block:: bash

   sudo aldpro-gpupdate --pm

Применить групповые политики командой:

.. code-block:: bash

  sudo aldpro-gpupdate --gp

Обновление резервного контроллера домена запускается в карточке резервного контроллера домена из списка, находящегося в **Управление доменом** - **Общая информация** - **Состав системы**.

Для лучшего контроля за процессом обновления подсистемы рекомендуется использовать форсированное обновление с помощью команды:

.. code-block:: bash

   sudo aldpro-roles --iud --action update


После обновления ALD Pro на портале необходимо перейти в карточку обновляемого сервера и убедиться, что состояние подсистемы имеет статус "Обновлена", без ошибок. Поле "Версия системы ALD Pro" должно содержать версию системы, до которой было выполнено обновление.
Если в процессе обновления что-то пошло не так, в карточке резервного контроллера домена будет отображаться ошибка.


Проверки, которые необходимо выполнить после обновления
---------------------------------------------------------

После завершения обновления системы необходимо выполнить следующие проверки, чтобы убедиться, что обновление выполнено корректно и **ALD Pro** готов к работе.

1. Проверить информацию на карточке КД (**Управление доменом** → **Сайты и службы** → **Контроллеры домена** или **Управление доменом** → **Общая информация** → **Состав системы**). Если КД находится в состоянии **Установлено**, **Ошибка**, не указана версия, то изучить логи:

- */var/log/ipaupgrade.log* - первый КД,
- */var/log/aldpro-salt/subsystem.log* - резервные контроллеры домена.

2. Проверить работоспособность основных служб: ``krb5-kdc, dirsrv, bind9-pkcs11, aldpro-salt-minion, sssd``. Полное название службы ``dirsrv`` содержит имя домена - ``dirsrv@ALD-COMPANY-LAN`` (пример). Выполняется на первом КД и резервных КД:

.. code-block:: bash

   systemctl status krb5-kdc 
   systemctl status dirsrv@ALD-COMPANY-LAN
   systemctl status bind9-pkcs11 
   systemctl status aldpro-salt-minion 
   systemctl status sssd
   sudo aldproctl status

3. Остановить и замаскировать службу ``salt-minion``, если она не используется:

.. code-block:: bash

   sudo systemctl stop salt-minion
   sudo systemctl disable salt-minion
   sudo systemctl mask salt-minion

4. Проверить наличие конфликтов репликации **LDAP**:

.. code-block:: bash

   dsconf ldap://<имя_КД> -D 'cn=Directory Manager' repl-conflict list <доменный суффикс>

5. Проверить работоспособность ролевой модели. Проверка осуществляется в портале управления путем просмотра списка ролей и их статуса, назначения роли или ролей пользователю с последующей проверкой доступа к разделам портала. Наличие конфликтов у записей в **LDAP**, имеющих отношение к ролям, привилегиям или разрешениям, также сигнализирует о возможных ошибках в функционировании ролевой модели. Если на первом КД ролевая модель работает, то на резервных контроллерах домена проверку можно осуществлять сравнением данных этого резервного контроллера домена с первым КД (``ds-replcheck``).
